namespace SmartMathLibrary.Geometry
{
    /// <summary>
    /// An interface to implement a Circle.
    /// </summary>
    public interface ICircle
    {
        /// <summary>
        /// Gets or sets the radius of the circle.
        /// </summary>
        /// <value>The radius of the circle.</value>
        double Radius { get; set; }

        /// <summary>
        /// Gets or sets the center of the circle.
        /// </summary>
        /// <value>The center of the circle.</value>
        Point2D Center { get; set; }

        /// <summary>
        /// Compares the current instance of a circle with another circle.
        /// </summary>
        /// <param name="compare">The circle to compare.</param>
        /// <returns>True if the position and the radius are even otherwise, false.</returns>
        bool CompareTo(Circle compare);

        /// <summary>
        /// Translates the position of the circle with a specified value.
        /// </summary>
        /// <param name="translateValue">The translation value for the x and y position.</param>
        void TranslateCircle(double translateValue);

        /// <summary>
        /// Translates the position of the circle with a specified value.
        /// </summary>
        /// <param name="translateValueX">The translation value for the x position.</param>
        /// <param name="translateValueY">The translation value for the y position.</param>
        void TranslateCircle(double translateValueX, double translateValueY);
    }
}